k8s上能夠流程化的進行佈署與管理後,進一步地可以探討應該如何進行安全性的議題,一部分可以透過rbac控管resource的存取,也可以透過sso的方式管理登入者驗證,外部存取透過api gateway控管,那麼進一步的就是yaml的限制了,為什麼要限制yaml呢?又什麼是限制yaml呢?
這兩個問題原因在於k8s就是一個服務的平台,只要有權限並且符合resource的spec就可以佈署上來,因此很容易造成一些問題像是有人使用來源不明的image、使用到privileged權限等等可能有資安問題的風險,同時也可以制定一些管理規範諸如image不可以使用latest這種具有風險的tag、避免缺少label的問題,使用open policy agent就可以在服務佈署到k8s上時多一層管控來驗證yaml的內容是否符合規範。
那麼opa是怎麼運作的呢?
OPA的運行是透過gatekeeper來作業的,在配置好opa gatekeeper後,定義constraints policy說明yaml要遵守的規則與yaml會透過怎樣的rego語法檢核,這樣yaml在宣告給k8s api時就會去確認是否有符合所有opa的規範,沒有符合的話deployment的事件將會記錄被opa擋下來並且無法佈署服務。